﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BOL;
using BOL.Ventas;
using UtilityExtensions;
using System.Web.UI.DataVisualization.Charting;
using System.Data.SqlClient;
using Website.Logger;
using System.Web.UI.HtmlControls;
using System.Drawing;

namespace UILGestion.VentaAdmin.Chart
{
    public partial class Chart06 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                if (!this.IsPostBack)
                {
                    idProyecto.Value = (string)Request.QueryString["idProyecto"];
                    FormatForm();
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        public void FormatForm()
        {
           

        }

       


        public void LoadChart(int idProyecto, int esAcumulado)
        {
            //actual

            
            List<IndicadorANIOMESInfo> lista = new List<IndicadorANIOMESInfo>();
            List<IndicadorANIOMESInfo> lista1 = new List<IndicadorANIOMESInfo>();
            List<IndicadorANIOMESInfo> lista2 = new List<IndicadorANIOMESInfo>();
            List<IndicadorANIOMESInfo> lista3 = new List<IndicadorANIOMESInfo>();
                
            var ANIOS= DbUtil.Db.OrdenVentas.Where(p=>p.idProyecto==idProyecto).OrderBy(P=>P.fecha.Year).Select(L=>L.fecha.Year).Distinct();
            

            foreach (var item in ANIOS)
	{
                var proyeccion = new BOL.Ventas.OrdenVentaBL().GetIndicadorComparativoAnual(idProyecto,
                                                                                    0,
                                                                                    item);
                IndicadorANIOMESInfo indicador = new IndicadorANIOMESInfo();
                indicador.anio = item;
                indicador.total = proyeccion.Where(p => p.anio == item).Sum(r =>r.cantidadVen).ToString("N");
                indicador.ENE = proyeccion.Where(p => p.anio == item & p.mes == 1).Sum(r => r.cantidadSep).ToString("N");
                indicador.FEB = proyeccion.Where(p => p.anio == item & p.mes == 2).Sum(r => r.cantidadSep).ToString("N");
                indicador.MAR = proyeccion.Where(p => p.anio == item & p.mes == 3).Sum(r => r.cantidadSep).ToString("N");
                indicador.ABR = proyeccion.Where(p => p.anio == item & p.mes == 4).Sum(r => r.cantidadSep).ToString("N");
                indicador.MAY = proyeccion.Where(p => p.anio == item & p.mes == 5).Sum(r => r.cantidadSep).ToString("N");
                indicador.JUN = proyeccion.Where(p => p.anio == item & p.mes == 6).Sum(r => r.cantidadSep).ToString("N");
                indicador.JUL = proyeccion.Where(p => p.anio == item & p.mes == 7).Sum(r => r.cantidadSep).ToString("N");
                indicador.AGO = proyeccion.Where(p => p.anio == item & p.mes == 8).Sum(r => r.cantidadSep).ToString("N");
                indicador.SET = proyeccion.Where(p => p.anio == item & p.mes == 9).Sum(r => r.cantidadSep).ToString("N");
                indicador.OCT = proyeccion.Where(p => p.anio == item & p.mes == 10).Sum(r => r.cantidadSep).ToString("N");
                indicador.NOV = proyeccion.Where(p => p.anio == item & p.mes == 11).Sum(r => r.cantidadSep).ToString("N");
                indicador.DIC = proyeccion.Where(p => p.anio == item & p.mes == 12).Sum(r => r.cantidadSep).ToString("N");

                IndicadorANIOMESInfo indicador1 = new IndicadorANIOMESInfo();
                indicador1.anio = item;
                indicador1.total = proyeccion.Where(p => p.anio == item).Sum(r => r.cantidadVen).ToString("N");
                indicador1.ENE = proyeccion.Where(p => p.anio == item & p.mes == 1).Sum(r => r.cantidadVen).ToString("N");
                indicador1.FEB = proyeccion.Where(p => p.anio == item & p.mes == 2).Sum(r => r.cantidadVen).ToString("N");
                indicador1.MAR = proyeccion.Where(p => p.anio == item & p.mes == 3).Sum(r => r.cantidadVen).ToString("N");
                indicador1.ABR = proyeccion.Where(p => p.anio == item & p.mes == 4).Sum(r => r.cantidadVen).ToString("N");
                indicador1.MAY = proyeccion.Where(p => p.anio == item & p.mes == 5).Sum(r => r.cantidadVen).ToString("N");
                indicador1.JUN = proyeccion.Where(p => p.anio == item & p.mes == 6).Sum(r => r.cantidadVen).ToString("N");
                indicador1.JUL = proyeccion.Where(p => p.anio == item & p.mes == 7).Sum(r => r.cantidadVen).ToString("N");
                indicador1.AGO = proyeccion.Where(p => p.anio == item & p.mes == 8).Sum(r => r.cantidadVen).ToString("N");
                indicador1.SET = proyeccion.Where(p => p.anio == item & p.mes == 9).Sum(r => r.cantidadVen).ToString("N");
                indicador1.OCT = proyeccion.Where(p => p.anio == item & p.mes == 10).Sum(r => r.cantidadVen).ToString("N");
                indicador1.NOV = proyeccion.Where(p => p.anio == item & p.mes == 11).Sum(r => r.cantidadVen).ToString("N");
                indicador1.DIC = proyeccion.Where(p => p.anio == item & p.mes == 12).Sum(r => r.cantidadSep).ToString("N");


                IndicadorANIOMESInfo indicador2 = new IndicadorANIOMESInfo();
                indicador2.anio = item;
                indicador2.total = proyeccion.Where(p => p.anio == item).Sum(r => r.cantidadVen).ToString("N");
                indicador2.ENE = proyeccion.Where(p => p.anio == item & p.mes == 1).Sum(r => r.totalSep).ToString("N");
                indicador2.FEB = proyeccion.Where(p => p.anio == item & p.mes == 2).Sum(r => r.totalSep).ToString("N");
                indicador2.MAR = proyeccion.Where(p => p.anio == item & p.mes == 3).Sum(r => r.totalSep).ToString("N");
                indicador2.ABR = proyeccion.Where(p => p.anio == item & p.mes == 4).Sum(r => r.totalSep).ToString("N");
                indicador2.MAY = proyeccion.Where(p => p.anio == item & p.mes == 5).Sum(r => r.totalSep).ToString("N");
                indicador2.JUN = proyeccion.Where(p => p.anio == item & p.mes == 6).Sum(r => r.totalSep).ToString("N");
                indicador2.JUL = proyeccion.Where(p => p.anio == item & p.mes == 7).Sum(r => r.totalSep).ToString("N");
                indicador2.AGO = proyeccion.Where(p => p.anio == item & p.mes == 8).Sum(r => r.totalSep).ToString("N");
                indicador2.SET = proyeccion.Where(p => p.anio == item & p.mes == 9).Sum(r => r.totalSep).ToString("N");
                indicador2.OCT = proyeccion.Where(p => p.anio == item & p.mes == 10).Sum(r => r.totalSep).ToString("N");
                indicador2.NOV = proyeccion.Where(p => p.anio == item & p.mes == 11).Sum(r => r.totalSep).ToString("N");
                indicador2.DIC = proyeccion.Where(p => p.anio == item & p.mes == 12).Sum(r => r.totalSep).ToString("N");


                IndicadorANIOMESInfo indicador3 = new IndicadorANIOMESInfo();
                indicador3.anio = item;
                indicador3.total = proyeccion.Where(p => p.anio == item).Sum(r => r.cantidadVen).ToString("N");
                indicador3.ENE = proyeccion.Where(p => p.anio == item & p.mes == 1).Sum(r => r.totalVen).ToString("N");
                indicador3.FEB = proyeccion.Where(p => p.anio == item & p.mes == 2).Sum(r => r.totalVen).ToString("N");
                indicador3.MAR = proyeccion.Where(p => p.anio == item & p.mes == 3).Sum(r => r.totalVen).ToString("N");
                indicador3.ABR = proyeccion.Where(p => p.anio == item & p.mes == 4).Sum(r => r.totalVen).ToString("N");
                indicador3.MAY = proyeccion.Where(p => p.anio == item & p.mes == 5).Sum(r => r.totalVen).ToString("N");
                indicador3.JUN = proyeccion.Where(p => p.anio == item & p.mes == 6).Sum(r => r.totalVen).ToString("N");
                indicador3.JUL = proyeccion.Where(p => p.anio == item & p.mes == 7).Sum(r => r.totalVen).ToString("N");
                indicador3.AGO = proyeccion.Where(p => p.anio == item & p.mes == 8).Sum(r => r.totalVen).ToString("N");
                indicador3.SET = proyeccion.Where(p => p.anio == item & p.mes == 9).Sum(r => r.totalVen).ToString("N");
                indicador3.OCT = proyeccion.Where(p => p.anio == item & p.mes == 10).Sum(r => r.totalVen).ToString("N");
                indicador3.NOV = proyeccion.Where(p => p.anio == item & p.mes == 11).Sum(r => r.totalVen).ToString("N");
                indicador3.DIC = proyeccion.Where(p => p.anio == item & p.mes == 12).Sum(r => r.totalVen).ToString("N");

                lista.Add(indicador);
                lista1.Add(indicador1);
                lista2.Add(indicador2);
                lista3.Add(indicador3);
            }

            itemGridView.DataSource = lista;
            itemGridView.DataBind();

            GridView1.DataSource = lista1;
            GridView1.DataBind();

            GridView3.DataSource = lista2;
            GridView3.DataBind();

            GridView3.DataSource = lista3;
            GridView3.DataBind();
              




            //Chart1.Series[0].Name = "";
            //Chart1.Titles[0].Text = " Año:{0}".Fmt(anio);


        }


        public void LoadChartONLYCH(int idproyecto, int idBanco)
        {

            var bol = new OrdenVentaBL();

            var instalacionPeriodo = bol.GetOrdenVentaFormatoCHResumenMASTOTAL(idproyecto,
                                                                     idBanco).ToList();


            itemGridView.DataSource = instalacionPeriodo;
            itemGridView.DataBind();

        }



        protected void itemGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
        {
            //e.Row.Cells[0].BackColor = Color.FromName("#99CCFF");

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                var item=       (OrdenVentaFormatoResumenInfo)(e.Row.DataItem);
                bool esTotal = item.esTotal;


                if (esTotal)
                {
                    e.Row.BackColor = Color.LightYellow;
                    e.Row.Font.Bold = true;
                }
                e.Row.Cells[4].ForeColor = (item.hasta30 > 0) ? Color.Red : Color.Green;
                e.Row.Cells[5].ForeColor = (item.hasta3060>0) ? Color.Red : Color.Green;
                e.Row.Cells[6].ForeColor = (item.hasta60mas> 0) ? Color.Red : Color.Green;


            }
        }

    }
}